package com.example.demo

import org.junit.After
import org.junit.Assert
import org.junit.Before
import org.junit.Test

/**
 * Kotlin 写 Android 单元测试（二），JUnit 4 测试框架和 kotlin.test 库的使用
 * https://johnnyshieh.me/posts/unit-test-junit4-and-kotlin-test/
 * Assertions CN
 * https://github.com/junit-team/junit4/wiki/Assertions-CN
 */
class JUnit4Test {

    /**
     * JUnit 4 提供了 @Before和@After注解可以很好地定义初始化和收尾工作
     */
    @Before
    fun start() {

    }

    @After
    fun end() {
    }

    @Test(expected = IllegalArgumentException::class)
    fun test() {
    }

    @Test
    fun testDevide() {
        val result:Double = 2.0 / 1.0
        // 偏差值 0.0001
        Assert.assertEquals(2.0, result, 0.0001)
        /*
        JUnit 4 中验证返回结果的方法还有：
        assertEquals(expected, actual)，验证 expected 的值是否和 actual 一样，如果传入是对象的话，那么会使用 equals 方法判断。
        assertArrayEquals(expected, actual)，验证 actual 数组是否和 expected 一样。
        assertFalse(actual)，验证 actual 的值为 false。
        assertNotNull(actual)，验证 actual 的值不是 null。
        assertNull(actual)，验证 actual 的值是 null。
        assertTrue(actual)，验证 actual 的值是 true。
        assertThat(actual, matcher)，验证 actual 是否符合 matcher 中的条件。

        fail 方法 故意让测试方法运行失败，例如在 catch 到某些异常时，这时可以使用fail方法
        Assert.fail()
        Assert.fail(message)

         */
    }

}